package com.lyf.juc.practice.lock;

/**
 * 需要从字节码进行分析？？
 *
 * 本来 进行在代码块中 还未结束，就还未释放monitor，就持有的，直接用就行了？
 *
 * 显示可重入、隐式可重入
 *
 * @author LYF
 * @date 2022/7/3
 */
public class ReEntryLockTests {

    // 同步代码方法
    public synchronized void  m1(){
        System.out.println("m1 进入");
        m2();
        System.out.println("m1 end");
    }
    public synchronized void m2(){
        System.out.println("m2 进入");
        m3();
    }
    public synchronized void m3(){
        System.out.println("m3 进入");
    }

    // 同步代码块
    public void m4(){
        final Object lock = new Object();
        synchronized (lock){
            System.out.println("hello1");
            synchronized (lock){
                System.out.println("hello2");
                synchronized (lock){
                    System.out.println("hello3");
                }
            }
        }
    }

    public synchronized void recursion(int c){
        if(c>0)
            recursion(c-1);
    }

    public static void main(String[] args) {

    //   ReEntryLockTests reEntryLockTests= new ReEntryLockTests();
//        reEntryLockTests.m1();
      // reEntryLockTests.m4();


    }

}
